package top.yj95.xiets.other;

import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;

/**
 * 文章《<a href="https://xiets.blog.csdn.net/article/details/75948927" target="_balnk">JavaSwing_4.1: JFrame（窗口）</a>》中的示例代码
 * @author 杨军
 * @since 2023-12-27
 */
public class JFrameDemo {

    public static void main(String[] args) {
        JFrame frame = new JFrame("测试窗口");
        frame.setSize(400, 400);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        
        JPanel panel = new JPanel();
        
        JButton btn = new JButton("Show New Window");
        btn.addActionListener(e -> showNewWindow(frame)); // 点击按钮，显示新的一个窗口
        panel.add(btn);
        
        frame.setContentPane(panel);
        frame.setVisible(true);
    }
    
    private static void showNewWindow(JFrame relativeWindow) {
        // 创建一个新窗口
        JFrame newJframe = new JFrame("新的窗口");
        newJframe.setSize(250, 250);
        
        // 把新窗口的位置设置到 relativeWindow 窗口的中心
        newJframe.setLocationRelativeTo(relativeWindow);
        
        // 点击窗口关闭按钮，执行销毁窗口操作（如果设置为 EXIT_ON_CLOSE，则点击新窗口关闭按钮后，整个进程将结束）
        newJframe.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        
        // 窗口设置为不可改变大小
        newJframe.setResizable(false);
        
        JPanel panel = new JPanel(new GridLayout(1, 1));
        
        // 在新窗口中显示一个标签
        JLabel label = new JLabel("这是一个窗口");
        label.setFont(new Font(null, Font.PLAIN, 25));
        label.setHorizontalAlignment(SwingConstants.CENTER);
        label.setVerticalAlignment(SwingConstants.CENTER);
        panel.add(label);
        
        newJframe.setContentPane(panel);
        newJframe.setVisible(true);
    }
    
}
